Skip to content

《Java语言程序设计》期末试卷A (精选02)

注意:

(1)所有答案均写在答题纸上,写在试卷上无效; (2)试题中若出现Java源代码,则不考虑源代码的大小写错误和标点符号错误,也不考虑标点符号的中英文状态;但考生自己书写的代码需要注意大小写! (3)当题目中只有程序片段时,假设完整程序已经具有其它必要代码并导入 Java 的必需包、主类的定义、main()方法的定义等。 (4)考试结束,试卷和答题纸一起上交。

一、单选题(每题 1 分,共 15 分)

1、以下哪个不是 Java 的原始数据类型( )

  • A. boolean
  • B. double
  • C. float
  • D. Integer
查看答案与解析

答案:D

解析: Java 的 8 种原始(基本)数据类型:byte, short, int, long, float, double, char, boolean。Integer 是 int 的包装类(Wrapper Class),属于引用类型,不是原始数据类型。


难度: ⭐ 考点: #基本数据类型 #包装类

💡 学习锦囊

📖 相关公式与知识点:

  • 8 种基本类型:byte, short, int, long, float, double, char, boolean。
  • 包装类:Integer, Long, Double 等都是引用类型,不是原始类型。

易错点

  • Integer 是引用类型,不是原始类型。原始类型是小写的 int。
🔄 举一反三
  1. 判断:Long 是 Java 的原始数据类型。( )
    查看练习答案与解析

    答案:× 解析Longlong 的包装类(引用类型),原始类型是小写的 long。所有包装类(Integer, Long, Double 等)都是引用类型。

2、如下哪个字符串是 Java 中的合法标识符( )

  • A. fieldname_sysValue
  • B. String
  • C. 3number
  • D. #number
查看答案与解析

答案:A

解析:

  • A:fieldname_sysValue 由字母、下划线组成,合法。✓
  • B:String 是 Java 核心类名,虽然技术上不是关键字、可以作为标识符,但极不推荐,容易引起混淆。本题问"合法标识符",A 更无争议。
  • C:3number 以数字开头,不合法。
  • D:#number 包含 #,不合法。

难度: ⭐ 考点: #标识符

💡 学习锦囊

📖 相关公式与知识点:

  • 标识符规则:字母/下划线/美元符号开头,不含 #、不以数字开头。

易错点

  • 标识符不能以数字开头,不能包含 # 等特殊字符。
🔄 举一反三
  1. 判断:$name 是 Java 中合法的标识符。( )
    查看练习答案与解析

    答案:√ 解析$ 是合法的标识符字符,可以出现在开头或中间。

3、条件运算符 ?: 是属于三元运算符,其用法为 op1 ? op2 : op3,正确的描述是( )

  • A. 若操作数 op1 为真,返回 op2,否则返回 op3
  • B. 若操作数 op2 为真,返回 op1,否则返回 op3
  • C. 若操作数 op1 为假,返回 op2,否则返回 op3
  • D. 若操作数 op1 为真,返回 op3,否则返回 op2
查看答案与解析

答案:A

解析: 三元运算符 op1 ? op2 : op3:当 op1 为 true 时返回 op2,否则返回 op3。


难度: ⭐ 考点: #三元运算符

💡 学习锦囊

📖 相关公式与知识点:

  • 三元运算符条件 ? 表达式1 : 表达式2,条件为 true 返回表达式1,否则返回表达式2。

易错点

  • 注意 op1 是条件,op2 是 true 时的返回值,op3 是 false 时的返回值。
🔄 举一反三
  1. int x = (5 > 3) ? 10 : 20;,x 的值是多少?
    查看练习答案与解析

    答案:10 解析:5 > 3 为 true,返回 10。

4、若整型变量 i 的值为偶数,那么值为 true 的逻辑表达式是( )

  • A. i / 2 == 0;
  • B. i % 2 != 1;
  • C. i % 2 == 1;
  • D. i % 2 equals 0;
查看答案与解析

答案:B

解析:

  • A:i / 2 == 0 是整数除法,只有 i 为 0 或 1 时才为 true,不正确。
  • B:i % 2 != 1,偶数除以 2 余 0(不等于 1),为 true。✓
  • C:i % 2 == 1,偶数除以 2 余 0(不等于 1),为 false,不正确。
  • D:equals 是对象方法,不能用于 int 的比较。

难度: ⭐ 考点: #取模运算 #偶数判断

💡 学习锦囊

📖 相关公式与知识点:

  • 判断偶数i % 2 == 0i % 2 != 1
  • 判断奇数i % 2 == 1i % 2 != 0

易错点

  • i / 2 == 0 不是判断偶数的正确方式(整数除法问题)。
  • equals 不能用于基本类型的比较。
🔄 举一反三
  1. 判断负数 -4 是否为偶数,-4 % 2 == 0 的结果是什么?
    查看练习答案与解析

    答案:true 解析:Java 中 -4 % 2 = 0,所以 -4 % 2 == 0 为 true,-4 是偶数。

5、判断 char 型变量 c 为数字字符的正确表达式为( )

  • A. '9' >= c >= '0'
  • B. c >= '0' && c <= '9'
  • C. 9 >= c || c >= 0
  • D. 9 >= c >= 0
查看答案与解析

答案:B

解析:

  • A:Java 不支持连续比较 '9' >= c >= '0'
  • B:c >= '0' && c <= '9',正确判断数字字符。✓
  • C:9 >= c || c >= 0 逻辑错误,用了 || 且比较的是数字而非字符。
  • D:同 A,不支持连续比较。

难度: ⭐ 考点: #字符比较 #逻辑运算符

💡 学习锦囊

📖 相关公式与知识点:

  • 数字字符范围'0' ~ '9',对应 Unicode 编码 48~57。
  • Java 不支持连续比较a >= c >= b 是非法语法。

易错点

  • Java 不支持连续比较如 a >= c >= b
  • 判断字符范围必须用 &&(与),不能用 ||(或)。
🔄 举一反三
  1. 判断 char 型变量 c 为大写字母的正确表达式是什么?
    查看练习答案与解析

    答案c >= 'A' && c <= 'Z'解析:大写字母的范围是 'A'(65) ~ 'Z'(90)。

6、下列程序段:

java
boolean a = false, b = true;
boolean c = (a && b) && (!b);
boolean result = (a || b) && (!b);

执行完后,正确的结果是( )

  • A. c=false; result=false
  • B. c=true; result=true
  • C. c=true; result=false
  • D. c=false; result=true
查看答案与解析

答案:A

解析:

  • a = false, b = true
  • c = (a && b) && (!b) = (false && true) && (!true) = false && false = false
  • result = (a || b) && (!b) = (false || true) && (!true) = true && false = false

因此 c=false, result=false,选 A


难度: ⭐ 考点: #逻辑运算符 #短路求值

💡 学习锦囊

📖 相关公式与知识点:

  • 逻辑运算符&&(与)、||(或)、!(非)。
  • 短路求值&& 遇到 false 则不再计算右边;|| 遇到 true 则不再计算右边。

易错点

  • &&|| 具有短路特性,&| 没有。
🔄 举一反三
  1. boolean x = true || (5/0 > 0); 会抛出异常吗?
    查看练习答案与解析

    答案:不会 解析|| 具有短路特性,左边 true 则不再计算右边,所以 5/0 不会执行。

7、对于一个三位正整数 n,表达式( )可以取出 n 的十位数字。

  • A. n % 10 / 10
  • B. n % 100
  • C. n / 10 % 10
  • D. n / 10
查看答案与解析

答案:C

解析: 以 n = 123 为例:

  • A:123 % 10 / 10 = 3 / 10 = 0 ✗
  • B:123 % 100 = 23 ✗
  • C:123 / 10 % 10 = 12 % 10 = 2
  • D:123 / 10 = 12 ✗

难度: ⭐ 考点: #取位运算

💡 学习锦囊

📖 相关公式与知识点:

  • 取位运算:个位 n%10,十位 n/10%10,百位 n/100%10

易错点

  • 取十位是先除以 10 再取模 10,不是先取模再除。
🔄 举一反三
  1. 取出一个五位正整数 n 的百位数字,表达式是什么?
    查看练习答案与解析

    答案n / 100 % 10解析:以 n = 12345 为例,12345 / 100 = 123123 % 10 = 3,即百位数字。

8、下列各语句序列中,能够将变量 u、s 中最大值赋值到变量 t 中的是( )

  • A. if (u > s) t = u; t = s;
  • B. t = s; if (u > s) t = u;
  • C. if (u > s) t = s; else t = u;
  • D. t = u; if (u > s) t = s;
查看答案与解析

答案:B

解析:

  • A:if(u>s) t=u; 后面 t=s; 无条件执行,t 总是等于 s。✗
  • B:先 t=s,若 u>st=u,最终 t 为较大值。✓
  • C:若 u>st=s(错误,应赋 u),否则 t=u。逻辑反了。✗
  • D:先 t=u,若 u>st=s(错误)。✗

难度: ⭐ 考点: #if语句 #求最大值

💡 学习锦囊

📖 相关公式与知识点:

  • 求最大值:先假设一个值为最大,再与另一个比较,更大则更新。

易错点

  • 注意 if 后面没有大括号时,只控制一条语句。
🔄 举一反三
  1. 用三元运算符实现 t = max(u, s)
    查看练习答案与解析

    答案t = (u > s) ? u : s;解析:如果 u > s,返回 u;否则返回 s。

9、关于方法的返回值,以下说法正确的是( )

  • A. 方法必须有返回值
  • B. 方法可以没有返回值,也可以有多个返回值
  • C. 方法有且仅有一个返回值
  • D. 方法必须有至少一个返回值
查看答案与解析

答案:C

解析: 方法要么没有返回值(void),要么有且仅有一个返回值。不能有多个返回值。


难度: ⭐ 考点: #方法 #返回值

💡 学习锦囊

📖 相关公式与知识点:

  • 方法返回值:void 方法无返回值,非 void 方法必须有且仅有一个返回值。

易错点

  • Java 方法不能返回多个值,如需返回多个值,可使用数组或对象封装。
🔄 举一反三
  1. 判断:void 方法中可以使用 return; 语句。( )
    查看练习答案与解析

    答案:√ 解析:void 方法中可以使用不带返回值的 return; 来提前结束方法。

10、下面叙述正确的是( )

  • A. 类就是对象,对象就是类
  • B. boolean 型是一种简单数据类型
  • C. 实现一个接口必需实现接口的所有方法
  • D. 抽象类中的方法都是没有方法体的抽象方法
查看答案与解析

答案:C

解析:

  • A 错误:类是模板,对象是实例,两者不同。
  • B 错误:boolean 是基本数据类型,不是"简单数据类型"这个说法(虽然意思接近,但 C 更准确)。
  • C 正确:实现接口必须实现接口中声明的所有抽象方法(除非该类是抽象类)。
  • D 错误:抽象类中可以包含非抽象方法(有方法体的方法)。

难度: ⭐ 考点: #类与对象 #接口 #抽象类

💡 学习锦囊

📖 相关公式与知识点:

  • 类与对象:类是模板/蓝图,对象是类的实例。
  • 接口实现:实现接口必须实现所有抽象方法(除非该类本身也是抽象类)。
  • 抽象类:可以包含抽象方法和非抽象方法。

易错点

  • 抽象类中可以包含非抽象方法(有方法体的方法)。
🔄 举一反三
  1. 判断:抽象类可以实现接口但不实现接口的所有方法。( )
    查看练习答案与解析

    答案:√ 解析:抽象类可以实现接口,但不要求实现所有方法,未实现的方法留给具体子类实现。

11、下面哪几个方法是 public void example(){...} 的重载方法?( )

  • A. public void Example(int m){...}
  • B. public int example(){...}
  • C. public void example2(){...}
  • D. public int example(int m, float f){...}
查看答案与解析

答案:D

解析: 重载要求方法名相同,参数列表不同。

  • A:方法名 Exampleexample 不同(大小写不同),不是重载。
  • B:参数列表相同(无参数),仅返回类型不同,不是重载。
  • C:方法名 example2 不同,不是重载。
  • D:方法名 example 相同,参数为 (int m, float f) 与原方法 () 不同,是合法重载。✓

难度: ⭐ 考点: #方法重载

💡 学习锦囊

📖 相关公式与知识点:

  • 方法重载:同名不同参(类型、个数、顺序),与返回类型无关。

易错点

  • 方法重载只看参数列表,返回类型不同不算重载。
  • Java 区分大小写,Exampleexample 是不同的方法名。
🔄 举一反三
  1. 判断:void f(int a)int f(int a) 构成方法重载。( )
    查看练习答案与解析

    答案:× 解析:参数列表完全相同,仅返回类型不同,不构成重载,编译报错。

12、下面叙述错误的是( )

  • A. 一个类可以有多个构造方法
  • B. 最终类不能派生子类,最终方法不能被覆盖
  • C. 如果一个类中没有定义构造方法,则Java在生成这个类的实例时不会调用构造方法
  • D. 数组一旦创建之后,就不能再改变其长度
查看答案与解析

答案:C

解析: 如果一个类中没有定义任何构造方法,Java 编译器会自动生成一个默认的无参构造方法,在创建实例时会调用它。C 说"不会调用构造方法"是错误的。


难度: ⭐ 考点: #构造方法 #默认构造方法

💡 学习锦囊

📖 相关公式与知识点:

  • 默认构造方法:未定义时编译器自动生成,定义了则不生成。

易错点

  • 即使没有手动定义构造方法,创建对象时也会调用编译器自动生成的默认构造方法。
🔄 举一反三
  1. 判断:如果一个类已经定义了一个有参构造方法,编译器还会自动生成无参构造方法吗?
    查看练习答案与解析

    答案:不会 解析:一旦手动定义了任何构造方法,编译器就不再自动生成默认的无参构造方法。

13、下面叙述正确的是( )

  • A. Java中一个类可以同时继承多个其他类,但只能实现一个接口
  • B. 框架 JFrame 作为图形用户界面的顶级容器,不可以直接放置按钮、标签等组件
  • C. 类头定义包含的四个部分分别为:访问控制修饰符、类名说明、父类名说明和接口名的说明,它们中的任何一个都是不能缺少的
  • D. 当浏览器暂时离开含 applet 程序的页面时,stop()方法将被执行
查看答案与解析

答案:D

解析:

  • A 错误:Java 不支持类的多继承,但可以实现多个接口。
  • B 错误:JFrame 可以通过 getContentPane().add() 或直接 add() 添加组件。
  • C 错误:父类名和接口名不是必须的。
  • D 正确:Applet 生命周期中,离开页面时调用 stop()

难度: ⭐ 考点: #单继承 #JFrame #Applet

💡 学习锦囊

📖 相关公式与知识点:

  • Java 继承:单继承(一个类只能 extends 一个父类),多实现(可以 implements 多个接口)。
  • Applet 生命周期:init() → start() → stop() → destroy()。

易错点

  • Java 不支持类的多继承。
🔄 举一反三
  1. 判断:Java 中一个类可以实现多个接口。( )
    查看练习答案与解析

    答案:√ 解析:Java 支持接口的多实现,如 class A implements Interface1, Interface2 {}

14、为了以字节方式从文件读出内容,可以使用( )类。

  • A. FileReader
  • B. FileInputStream
  • C. FileOutputStream
  • D. FileWriter
查看答案与解析

答案:B

解析:

  • FileReader:字符输入流
  • FileInputStream:字节输入流
  • FileOutputStream:字节输出流
  • FileWriter:字符输出流

难度: ⭐ 考点: #字节流 #字符流

💡 学习锦囊

📖 相关公式与知识点:

  • 字节流 vs 字符流:InputStream/OutputStream(字节),Reader/Writer(字符)。

易错点

  • 读取用 Input 流,写入用 Output 流。
🔄 举一反三
  1. 以字符方式写入文件应使用哪个类?
    查看练习答案与解析

    答案:FileWriter 解析:FileWriter 是字符输出流,用于以字符方式写入文件。

15、布局管理器可以管理容器中组件的( )。

  • A. 大小和字体
  • B. 颜色和位置
  • C. 大小和位置
  • D. 字体和颜色
查看答案与解析

答案:C

解析: 布局管理器负责管理容器中组件的大小和位置。常见的布局管理器:FlowLayout、BorderLayout、GridLayout、CardLayout 等。


难度: ⭐ 考点: #布局管理器

💡 学习锦囊

📖 相关公式与知识点:

  • 布局管理器:管理组件的大小和位置,不管理颜色和字体。
  • 常见布局:FlowLayout(流式)、BorderLayout(边界)、GridLayout(网格)、CardLayout(卡片)。

易错点

  • 布局管理器只管大小和位置,不管颜色和字体。
🔄 举一反三
  1. JFrame 默认使用什么布局管理器?
    查看练习答案与解析

    答案:BorderLayout 解析:JFrame 默认使用 BorderLayout,将容器分为东、南、西、北、中五个区域。

二、程序阅读题(每题 2 分,共 24 分)

程序 1:$1 + 2/3 + 3/5 + 4/7 + 5/9 + \dots$ 的前 20 项之和。

java
public class Exam21 {
    public static void main(String args[]) {
        int i = 1, b = 1;
        double s;
        (1) s = 0;
        while ((2) i <= 20) {
            (3) s = s + (double)i / b;
            b = b + 2;
            i++;
        }
        System.out.print(s);
    }
}

【供选择的答案】

(1) A. s = 0  B. s = 1  C. s = -1  D. s = 2

(2) A. b <= 20  B. i <= 20  C. i < 20  D. b < 20

(3) A. s = s + double(i)/double(b)  B. s = s + i/b  C. s += i/2*i-1  D. s += (double)i/b

查看答案与解析

答案:(1)A (2)B (3)D

解析:

  • (1) 累加变量 s 应初始化为 0,选 A。
  • (2) 循环条件应为前 20 项,由变量 i 控制(i 从 1 到 20),选 B。
  • (3) 需要 double 类型除法,A 语法错误(double(i) 不是 Java 语法),B 是整数除法,C 公式错误,D (double)i/b 正确。

难度: ⭐⭐ 考点: #循环累加 #类型转换

💡 学习锦囊

📖 相关公式与知识点:

  • 整数除法 vs 浮点除法i/b(整数),(double)i/b(浮点)。
  • 累加初始化:累加变量 s 应初始化为 0。

易错点

  • (double)i/bdouble(i)/double(b) 不同,后者不是 Java 语法。
🔄 举一反三
  1. 计算 $1 + 1/2 + 1/3 + \dots + 1/100$,写出核心循环语句。
    查看练习答案与解析

    答案double s = 0; for (int i = 1; i <= 100; i++) s += 1.0 / i;解析:注意使用 1.0 / i 确保浮点除法。

程序 2: 以下程序的功能是输出字符串"Beijing 2008!"包含的小写英文字母个数。

java
public class Exam22 {
    public static void main(String args[]) {
        String s = "Beijing 2008!";
        int i;
        int count = 0;
        for (i = 0; i < s.length(); i++) {
            (4) ch = s.charAt(i);
            if ((5))
                count++;
        }
        System.out.println(count);
    }
}

【供选择的答案】

(4) A. char  B. String  C. int  D. double

(5) A. ch >= 'a'  B. ch >= 'a' && ch <= 'z'  C. ch >= 'a' || ch <= 'z'  D. ch >= 'a' & ch <= 'z'

查看答案与解析

答案:(4)A (5)B

解析:

  • (4) s.charAt(i) 返回 char 类型,变量 ch 应声明为 char,选 A。
  • (5) 判断小写字母:ch >= 'a' && ch <= 'z',选 B。C 用 || 逻辑错误,D 用 & 是位运算也可但不如 && 规范。

难度: ⭐⭐ 考点: #字符串遍历 #charAt #字符判断

💡 学习锦囊

📖 相关公式与知识点:

  • charAt():返回指定索引处的 char 值。
  • 小写字母范围'a' ~ 'z'

易错点

  • 判断小写字母必须用 &&(与),不能用 ||(或)。
🔄 举一反三
  1. 统计字符串 "Hello World 2024!" 中大写字母的个数。
    查看练习答案与解析

    答案:2(H 和 W) 解析:遍历字符串,判断 ch >= 'A' && ch <= 'Z',满足则计数。

程序 3: 在数组中查找键盘输入的整数。

java
import java.util.*;
class Exam23 {
    public static void main(String[] args) throws IOException {
        int (6) = {83, 75, 92, 67, 55, 99, 78, 61};
        Scanner sc = new Scanner(System.in);
        int x = sc.nextInt();
        int index = -1;
        for (int i = 0; (7); i++)
            if (a[i] == x) {
                index = i;
                break;
            }
        if ((8))
            System.out.println("not found");
        else
            System.out.println(index);
    }
}

【供选择的答案】

(6) A. a[8]  B. a[]  C. a  D. new a[8]

(7) A. a[i] != x  B. a[i] == x  C. i <= a.length  D. i < a.length

(8) A. index != -1  B. a[i] != x  C. a[index] == x  D. index == -1

查看答案与解析

答案:(6)C (7)D (8)D

解析:

  • (6) 数组声明并初始化:int a[] = {83, 75, ...}int[] a = {83, 75, ...},选 C(a[] 写法在声明时需要类型前缀,此处 a 配合前面 int 组成 int a[])。
  • (7) 循环条件:i < a.length,选 D。C 的 i <= a.length 会导致越界。
  • (8) 若 index == -1 表示未找到,输出 "not found",选 D。

难度: ⭐⭐ 考点: #数组 #数组查找 #length

💡 学习锦囊

📖 相关公式与知识点:

  • 数组声明初始化int[] a = {...}int a[] = {...}
  • 数组长度a.length(不是 a.length())。
  • 查找标志:用 -1 表示未找到是常见做法。

易错点

  • i <= a.length 会越界,应该是 i < a.length
🔄 举一反三
  1. 判断一个整数 x 是否在数组 a 中存在,写出核心循环。
    查看练习答案与解析

    答案boolean found = false; for (int v : a) if (v == x) { found = true; break; }解析:使用增强 for 循环遍历数组,找到则设置标志并退出。

程序 4: 输出 100-1000 之间所有能被 7 整除且 3 个数字中至少有 2 个 8 的三位数。满足条件的数是:588 868 882 889

java
class Exam24 {
    public static void main(String args[]) {
        int temp, count;
        for (int i = 100; i < 1000; i++) {
            if ((9))
                continue;
            count = 0;
            temp = i;
            while ((10)) {
                if ((11))
                    count++;
                temp = temp / 10;
            }
            if ((12))
                System.out.println(i);
        }
    }
}

【供选择的答案】

(9) A. temp > 0  B. count >= 2  C. i % 7 == 0  D. temp % 10 == 8

(10) A. temp > 0  B. count >= 2  C. i % 7 == 0  D. temp % 10 == 8

(11) A. temp > 0  B. count >= 2  C. i % 7 == 0  D. temp % 10 == 8

(12) A. temp > 0  B. count >= 2  C. i % 7 == 0  D. temp % 10 == 8

查看答案与解析

答案:(9)C (10)A (11)D (12)B

解析:

  • (9) 首先判断是否能被 7 整除,i % 7 == 0,不满足则 continue,选 C。
  • (10) while 循环逐位检查数字,条件为 temp > 0,选 A。
  • (11) 检查当前位是否为 8:temp % 10 == 8,选 D。
  • (12) 至少 2 个 8:count >= 2,选 B。

难度: ⭐⭐ 考点: #数字位提取 #条件判断 #continue

💡 学习锦囊

📖 相关公式与知识点:

  • 数字位提取n % 10 取个位,n / 10 去掉个位,循环操作可逐位提取。
  • continue:跳过当前迭代,进入下一次循环。

易错点

  • 逐位提取时 while 条件是 temp > 0,不是 temp >= 0
🔄 举一反三
  1. 判断一个三位数 n 是否包含数字 7,写出条件表达式。
    查看练习答案与解析

    答案n % 10 == 7 || n / 10 % 10 == 7 || n / 100 == 7解析:分别检查个位、十位、百位是否等于 7,用 || 连接。

三、程序填空题(每空 2 分,共 30 分)

1、若 a 的值为 3 时,下列程序段被执行后,c 的值是 (1)

java
c = 1;
if (a > 0) {
    if (a > 3) c = 2;
    else c = 3;
} else c = 4;
查看答案与解析

答案:3

解析:

  • a = 3a > 0 为 true → 进入外层 if
  • a > 3(3 > 3)为 false → 进入 else → c = 3

难度: ⭐ 考点: #if-else #嵌套判断

💡 学习锦囊

📖 相关公式与知识点:

  • 嵌套 if-else:外层条件满足后,再判断内层条件。
  • else 配对:else 与最近的 if 配对。

易错点

  • 3 > 3 为 false,不是 true。
🔄 举一反三
  1. 若 a = 5,上述程序段执行后 c 的值是多少?
    查看练习答案与解析

    答案:2 解析:a = 5,a > 0 为 true,a > 3 为 true,c = 2

2、以下程序的运行结果是 (2)

java
public class Exam32 {
    public static void main(String[] args) {
        char grade = 'B';
        switch (grade) {
            case 'B': System.out.print("Excellent");
            case 'C': System.out.print("OK"); break;
            default: System.out.print("Let's talk");
        }
    }
}
查看答案与解析

答案:ExcellentOK

解析: switch 语句中,grade = 'B' 匹配 case 'B',输出 "Excellent"。由于 case 'B' 后没有 break,发生穿透(fall-through),继续执行 case 'C',输出 "OK",然后遇到 break 退出。


难度: ⭐⭐ 考点: #switch穿透 #break

💡 学习锦囊

📖 相关公式与知识点:

  • switch 穿透:没有 break 时,执行完当前 case 后会继续执行下一个 case。
  • break:跳出 switch 语句。

易错点

  • 忘记写 break 会导致穿透,输出多个 case 的内容。
🔄 举一反三
  1. 若在 case 'B' 后加上 break;,程序输出什么?
    查看练习答案与解析

    答案:Excellent 解析:加上 break 后,匹配 case 'B' 输出 "Excellent" 后直接跳出 switch,不再穿透。

3、以下程序的运行结果是 (3)

java
public class Exam33 {
    public static void main(String args[]) {
        try {
            System.out.print("try");
        } catch (Exception e) {
            System.out.print("catch");
        } finally {
            System.out.print("finally");
        }
    }
}
查看答案与解析

答案:tryfinally

解析: try 块中没有异常,输出 "try"。finally 块无论是否异常都会执行,输出 "finally"。catch 块不执行。


难度: ⭐⭐ 考点: #try-catch-finally

💡 学习锦囊

📖 相关公式与知识点:

  • finally:无论是否发生异常,finally 块都会执行。
  • 执行顺序:try → catch(有异常时)→ finally。

易错点

  • finally 块总是会执行,即使 try 中有 return。
🔄 举一反三
  1. 若 try 块中抛出异常,上述程序输出什么?
    查看练习答案与解析

    答案:trycatchfinally 解析:try 中输出 "try" 后抛出异常,catch 捕获输出 "catch",finally 输出 "finally"。

4、阅读以下程序,若命令行参数为 "aBc",输出结果是 (4)

java
class Exam34 {
    public static void main(String[] args) {
        String s, s1 = "";
        char c;
        s = args[0];
        for (int i = 0; i < s.length(); i++) {
            c = s.charAt(i);
            if (c >= 'a' && c <= 'z') {
                s1 = s1 + Character.toUpperCase(c);
            } else {
                s1 = s1 + Character.toLowerCase(c);
            }
        }
        System.out.println(s1);
    }
}
查看答案与解析

答案:AbC

解析: 输入 "aBc":

  • i=0: c='a',是小写字母 → toUpperCase → 'A',s1 = "A"
  • i=1: c='B',不是小写字母 → toLowerCase → 'b',s1 = "Ab"
  • i=2: c='c',是小写字母 → toUpperCase → 'C',s1 = "AbC"

输出 "AbC"。


难度: ⭐⭐ 考点: #字符大小写转换 #Character类

💡 学习锦囊

📖 相关公式与知识点:

  • Character.toUpperCase():将字符转换为大写。
  • Character.toLowerCase():将字符转换为小写。

易错点

  • 注意程序逻辑:小写转大写,非小写(包括大写)转小写。
🔄 举一反三
  1. 若输入 "HELLO",上述程序输出什么?
    查看练习答案与解析

    答案:hello 解析:所有字符都不是小写字母,全部转为小写。

5、根据父类与子类间构造方法调用的先后顺序,程序的运行结果是 (5)

java
class C1 {
    C1() { System.out.print("1"); }
}
class C2 extends C1 {
    C2() { System.out.print("2"); }
}
class C3 extends C2 {
    C3() { System.out.print("3"); }
}
public class Test {
    public static void main(String[] args) {
        C3 obj = new C3();
    }
}
查看答案与解析

答案:123

解析: 创建子类对象时,构造方法的调用顺序是从父类到子类

  1. 先调用 C1 的构造方法 → 输出 "1"
  2. 再调用 C2 的构造方法 → 输出 "2"
  3. 最后调用 C3 的构造方法 → 输出 "3"

输出 "123"。


难度: ⭐⭐ 考点: #继承构造顺序

💡 学习锦囊

📖 相关公式与知识点:

  • 构造方法调用顺序:从父类到子类,先初始化父类部分,再初始化子类部分。
  • super():子类构造方法默认第一行调用 super()(父类无参构造方法)。

易错点

  • 构造方法调用顺序是从父类到子类,不是从子类到父类。
🔄 举一反三
  1. 若 C2 的构造方法中显式调用 super("hello")(假设 C1 有对应构造方法),执行顺序会改变吗?
    查看练习答案与解析

    答案:不会改变 解析:仍然是先调用 C1 的构造方法,再调用 C2 的,最后调用 C3 的。只是 C1 的构造方法变成了带参数的版本。

6、下面程序对数组中每个元素赋值,然后按逆序输出

java
import java.io.*;
public class Exam36 {
    public static void main(String args[]) {
        int i;
        int a[] = new int[5];
        for (i = 0; i < 5; (6)______)
            a[i] = i;
        for ((7)______; i >= 0; i--)
            System.out.println("a[" + i + "]=" + a[i]);
    }
}
查看答案与解析

答案:

  • (6) i++
  • (7) i = 4

解析:

  • (6) 循环变量递增:i++
  • (7) 逆序输出从最后一个元素开始:第一个循环结束后 i=5,但逆序应从索引 4 开始,所以 i = 4

难度: ⭐⭐ 考点: #数组逆序 #for循环

💡 学习锦囊

📖 相关公式与知识点:

  • 数组逆序输出:从 a.length - 1 开始递减到 0。
  • 循环变量:注意循环结束后变量的值。

易错点

  • 第一个循环结束后 i=5,逆序应从索引 4 开始,不是 5。
🔄 举一反三
  1. 如何修改第二个循环,使其不需要手动设置 i = 4
    查看练习答案与解析

    答案for (i = a.length - 1; i >= 0; i--)解析:使用 a.length - 1 作为起始值,更通用。

7、"角谷猜想"程序:输入正整数,若为偶数则除以 2,若为奇数则乘以 3 再加 1。重复运算最终可得 1。运行时输入 12,则输出为:12 6 3 10 5 16 8 4 2 1

java
import java.util.Scanner;
public class Exam37 {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();
        System.out.print(num + " ");
        while (num != 1) {
            if (num % 2 == 0)
                num = num / 2;
            else
                num = num * 3 + 1;
            System.out.print(num + " ");
        }
    }
}
查看答案与解析

答案: 程序功能正确,输入 12 输出 12 6 3 10 5 16 8 4 2 1

解析: 角谷猜想(Collatz 猜想):

  • 偶数:除以 2
  • 奇数:乘以 3 加 1
  • 重复直到结果为 1

以输入 12 为例:

  • 12(偶) → 6 → 3(奇) → 10 → 5(奇) → 16 → 8 → 4 → 2 → 1

难度: ⭐⭐ 考点: #角谷猜想 #while循环 #条件判断

💡 学习锦囊

📖 相关公式与知识点:

  • 角谷猜想:对任意正整数,反复进行偶数除 2、奇数乘 3 加 1 的操作,最终都会得到 1。
  • while 循环:条件为 num != 1,直到 num 变为 1 时退出。

易错点

  • 注意奇数的操作是 num * 3 + 1,不是 num * 3 - 1
🔄 举一反三
  1. 若输入 7,写出角谷猜想的输出序列。
    查看练习答案与解析

    答案:7 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1 解析:7(奇)→22→11(奇)→34→17(奇)→52→26→13(奇)→40→20→10→5(奇)→16→8→4→2→1

你正在阅读的是会员专属文档,💕 限时特惠进行中
你尚未登录,目前新用户可获3天体验会员,去登录